package com.itheima.homework;

import java.util.Random;
import java.util.Scanner;

public class Homework04 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String okCode = createCode(4);
        System.out.println("请在输完账号和密码后输入下列验证码" + okCode);
        //验证码固定位4位
        while (true) {
            //记住:独立功能,独立成方法
            //提示管理员输入要生成验证码的位数
            System.out.println("=========模拟用户登录========");
            System.out.println("请您输入账号");
            //接受用户名
            String userName = sc.next();

            System.out.println("请输入你的密码");
            String password = sc.next();

            //提示用户输入验证码
            System.out.println("请按照图片输入验证码");
            String code = sc.next();

            //验证登录是否成功
            if (checkLogin(userName, password, code, okCode)) {
                System.out.println("恭喜你登陆成功");
                break;
            }
        }
    }

    public static boolean checkLogin(String userName, String password, String code, String okCode) {
        //获取正确的密码和账号
        String okUsername = "gzitheima";
        String okPassword = "loveJava";

        //首先对验证码进行验证,验证码忽略大小写
      /*  if (okCode.equalsIgnoreCase(code)) {
            //比较用户名这是严格区分大小写
            if (okUsername.equals(userName)){
                if (okPassword.equals(password)){
                    return true;
                }
                else {
                    System.out.println("你的用户名或密码有误,亲重新登陆");
                    return false;
                }
            }else {
                System.out.println("您的账号输入有误,请重新登陆");
                return false;
            }
        }*/
        if (okCode.equalsIgnoreCase(code)) {
            //比较用户名这是严格区分大小写
            if (okUsername.equals(userName) && okPassword.equals(password)) {
                return true;
            } else {
                System.out.println("你的用户名或密码有误,亲重新登陆");
                return false;
            }
        }
        System.out.println("验证码输入错误,请重新登陆");
        return false;

    }

    //生成验证码,形参列表需要位数,返回值,就是验证码 String返回
    public static String createCode(int number) {
        String code = "";
        String data = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        //创建随机对象
        Random random = new Random();
        //循环获取随机获取字符,拼接成验证码
        for (int i = 0; i < number; i++) {
            //获取随机索引
            int index = random.nextInt(data.length());
            //按照随机索引获取获取字符,然后拼接成字符串
            code += data.charAt(index);
        }
        //将生成的验证码返回
        return code;
    }
}
